package cn.seaboot.admin.quartz.smart;

/**
 * 任务执行状态
 * <p>
 * 准确的说，是日志状态，任务执行的时候，会产生一条日志，
 * 日志从等待，到成功，或异常的过程。
 *
 * @author Mr.css
 * @version 2023-02-21 9:00
 */
public enum JobResult {
    /**
     * 完成
     */
    SUCCEED(0),
    /**
     * 整体错误
     * <p>
     * 处理业务过程中出错。
     */
    ERROR(1),
    /**
     * 因为正在执行而终止
     * <p>
     * 这只是预设的状态值，只有耗时的操作才需要考虑这个状态
     */
    RUNNING(2),
    /**
     * 因为等待而终止
     * <p>
     * 这只是预设的状态值，只有耗时的操作才需要考虑这个状态
     */
    WAITING(3),
    /**
     * 部分出错而终止
     * <p>
     * 这个只会在嵌套子任务的情况下发生。
     * 一次定时任务可能包含多个业务细项，任务主体业务是对的，但是处理细项的时候错误。
     * 比如：1 个任务有 5 组数据要处理，处理过程中，其中 3 个出错。
     * <p>
     * 一般用不上，因为很出现逻辑异常，程序有可能不断重复处理 3 个错误的数据，产生无限递归的问题。
     */
    ITEM_ERROR(4);

    private final int value;

    JobResult(int value) {
        this.value = value;
    }

    public int value() {
        return this.value;
    }

    public static JobResult valueOf(int value) {
        return values()[value];
    }
}
